home *** CD-ROM | disk | FTP | other *** search
-
-
-
- GGGGEEEETTTTSSSSOOOOCCCCKKKKOOOOPPPPTTTT((((2222)))) GGGGEEEETTTTSSSSOOOOCCCCKKKKOOOOPPPPTTTT((((2222))))
-
-
-
- NNNNAAAAMMMMEEEE
- getsockopt, setsockopt - get and set options on sockets
-
- CCCC SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- ####iiiinnnncccclllluuuuddddeeee <<<<ssssyyyyssss////ttttyyyyppppeeeessss....hhhh>>>>
- ####iiiinnnncccclllluuuuddddeeee <<<<ssssyyyyssss////ssssoooocccckkkkeeeetttt....hhhh>>>>
-
- iiiinnnntttt ggggeeeettttssssoooocccckkkkoooopppptttt((((iiiinnnntttt ssss,,,, iiiinnnntttt lllleeeevvvveeeellll,,,, iiiinnnntttt ooooppppttttnnnnaaaammmmeeee,,,, vvvvooooiiiidddd ****ooooppppttttvvvvaaaallll,,,,
- iiiinnnntttt ****ooooppppttttlllleeeennnn))));;;;
-
- iiiinnnntttt sssseeeettttssssoooocccckkkkoooopppptttt((((iiiinnnntttt ssss,,,, iiiinnnntttt lllleeeevvvveeeellll,,,, iiiinnnntttt ooooppppttttnnnnaaaammmmeeee,,,, ccccoooonnnnsssstttt vvvvooooiiiidddd ****ooooppppttttvvvvaaaallll,,,,
- iiiinnnntttt ooooppppttttlllleeeennnn))));;;;
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- _G_e_t_s_o_c_k_o_p_t and _s_e_t_s_o_c_k_o_p_t manipulate _o_p_t_i_o_n_s associated with a socket.
- Options may exist at multiple protocol levels; they are always present at
- the uppermost ``socket'' level.
-
- When manipulating socket options the level at which the option resides
- and the name of the option must be specified. To manipulate options at
- the ``socket'' level, _l_e_v_e_l is specified as SOL_SOCKET. To manipulate
- options at any other level the protocol number of the appropriate
- protocol controlling the option is supplied. For example, to indicate
- that an option is to be interpreted by the TCP protocol, _l_e_v_e_l should be
- set to the protocol number of TCP; see _g_e_t_p_r_o_t_o_e_n_t(3N).
-
- The parameters _o_p_t_v_a_l and _o_p_t_l_e_n are used to access option values for
- _s_e_t_s_o_c_k_o_p_t. For _g_e_t_s_o_c_k_o_p_t they identify a buffer in which the value for
- the requested option(s) are to be returned. For _g_e_t_s_o_c_k_o_p_t, _o_p_t_l_e_n is a
- value-result parameter, initially containing the size in bytes of the
- buffer pointed to by _o_p_t_v_a_l, and modified on return to indicate the
- actual size of the value returned. If the size of the option value is
- greater than the value of _o_p_t_l_e_n, then the option will be truncated
- silently to _o_p_t_l_e_n bytes.
-
- If no option value is to be supplied or returned, _o_p_t_v_a_l may be supplied
- as 0.
-
- _O_p_t_n_a_m_e and any specified options are passed uninterpreted to the
- appropriate protocol module for interpretation. The include file
- <_s_y_s/_s_o_c_k_e_t._h> contains definitions for ``socket'' level options,
- described below. Options at other protocol levels vary in format and
- name; consult the appropriate entries in section (7P).
-
- Most socket-level options listed in the table below take an _i_n_t parameter
- for _o_p_t_v_a_l. For _s_e_t_s_o_c_k_o_p_t, the parameter should non-zero to enable a
- boolean option, or zero if the option is to be disabled. SO_LINGER uses
- a _s_t_r_u_c_t _l_i_n_g_e_r parameter, defined in <_s_y_s/_s_o_c_k_e_t._h>, which specifies the
- desired state of the option and the linger interval (see below).
-
-
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- GGGGEEEETTTTSSSSOOOOCCCCKKKKOOOOPPPPTTTT((((2222)))) GGGGEEEETTTTSSSSOOOOCCCCKKKKOOOOPPPPTTTT((((2222))))
-
-
-
- The following options are recognized at the socket level. Except as
- noted, each may be examined with _g_e_t_s_o_c_k_o_p_t and set with _s_e_t_s_o_c_k_o_p_t.
-
-
- SO_DEBUG toggle recording of debugging information
- SO_REUSEADDR toggle local address reuse
- SO_KEEPALIVE toggle keep connections alive
- SO_DONTROUTE toggle routing bypass for outgoing messages
- SO_LINGER linger on close if data present
- SO_BROADCAST toggle permission to transmit broadcast messages
- SO_OOBINLINE toggle reception of out-of-band data in band
- SO_REUSEPORT toggle local port reuse for multicast programs
- SO_SNDBUF set buffer size for output
- SO_RCVBUF set buffer size for input
- SO_TYPE get the type of the socket (get only)
- SO_ERROR get and clear error on the socket (get only)
-
-
- SO_DEBUG enables debugging in the underlying protocol modules.
- SO_REUSEADDR indicates that the rules used in validating addresses
- supplied in a _b_i_n_d(2) call should allow reuse of local addresses.
- SO_REUSEPORT indicates that the rules used in validating ports supplied
- in a _b_i_n_d(2) call should allow reuse of local ports. It allows multiple
- programs to receive UDP multicast/broadcast datagrams on the same port if
- they all set SO_REUSEPORT before binding the port. SO_KEEPALIVE enables
- the periodic transmission of messages on a connected socket. Should the
- connected party fail to respond to these messages, the connection is
- considered broken and processes using the socket are notified via a
- SIGPIPE signal. SO_DONTROUTE indicates that outgoing messages should
- bypass the standard routing facilities. Instead, messages are directed
- to the appropriate network interface according to the network portion of
- the destination address.
-
- SO_LINGER controls the action taken when unsent messages are queued on
- socket and a _c_l_o_s_e(2) is performed. If the socket promises reliable
- delivery of data and SO_LINGER is set, the system will block the process
- on the _c_l_o_s_e attempt until it is able to transmit the data or until it
- decides it is unable to deliver the information (a timeout period, termed
- the linger interval, is specified in the _s_e_t_s_o_c_k_o_p_t call when SO_LINGER
- is requested). If SO_LINGER is disabled and a _c_l_o_s_e is issued, the system
- will process the close in a manner that allows the process to continue as
- quickly as possible.
-
- The option SO_BROADCAST requests permission to send broadcast datagrams
- on the socket. Broadcast was a privileged operation in earlier versions
- of the system. With protocols that support out-of-band data, the
- SO_OOBINLINE option requests that out-of-band data be placed in the
- normal data input queue as received; it will then be accessible with _r_e_c_v
- or _r_e_a_d calls without the MSG_OOB flag. SO_SNDBUF and SO_RCVBUF are
- options to adjust the normal buffer sizes allocated for output and input
- buffers, respectively. The buffer size may be increased for high-volume
- connections, or may be decreased to limit the possible backlog of
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- GGGGEEEETTTTSSSSOOOOCCCCKKKKOOOOPPPPTTTT((((2222)))) GGGGEEEETTTTSSSSOOOOCCCCKKKKOOOOPPPPTTTT((((2222))))
-
-
-
- incoming data. The system places an absolute limit on these values.
- Finally, SO_TYPE and SO_ERROR are options used only with _g_e_t_s_o_c_k_o_p_t.
-
- SO_TYPE returns the type of the socket, such as SOCK_STREAM; it is useful
- for servers that inherit sockets on startup. SO_ERROR returns any
- pending error status on the socket and clears the error status. It may be
- used to check for asynchronous errors on connected datagram sockets or
- for other asynchronous errors. The error status is an _e_r_r_n_o value as
- described in _i_n_t_r_o(2).
-
- RRRREEEETTTTUUUURRRRNNNN VVVVAAAALLLLUUUUEEEE
- A 0 is returned if the call succeeds, -1 if it fails.
-
- EEEERRRRRRRROOOORRRRSSSS
- The call succeeds unless:
-
- [EBADF] The argument _s is not a valid descriptor.
-
- [ENOTSOCK] The argument _s is a file, not a socket.
-
- [ENOPROTOOPT] The option is unknown at the level indicated.
-
- [EFAULT] The address pointed to by _o_p_t_v_a_l is not in a valid
- part of the process address space. For _g_e_t_s_o_c_k_o_p_t,
- this error may also be returned if _o_p_t_l_e_n is not in a
- valid part of the process address space.
-
- [EINVAL] The option length is too small. Most socket-level
- options expect _o_p_t_l_e_n to be _s_i_z_e_o_f(_i_n_t).
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- ioctl(2), socket(2), getprotoent(3N), ip(7P), tcp(7P), udp(7P)
-
- NNNNOOOOTTTTEEEE
- ABI-compliant versions of the above calls can be obtained from
- _l_i_b_s_o_c_k_e_t._s_o.
-
- BBBBUUUUGGGGSSSS
- Several of the socket options should be handled at lower levels of the
- system.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-